Distributed architecture for media playback system

ABSTRACT

A method and system to provide media to a terminal coupled to a network, the terminal comprising a media playback component. The method and system provides for programmatically directing the terminal to access a first network site in the plurality of network sites, and causing the media playback component on the terminal to automatically load a first media web resource located at the first network site to playback a first media. The method and system also includes programmatically directing the terminal to access a second network site in the plurality of network sites, and causing the media playback component on the terminal to automatically load a second media web resource located at the second network site to playback a second media.

CROSS REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.09/562,939, filed May 2, 2000 entitled “DISTRIBUTED ARCHITECTURE FORMEDIA PLAYBACK SYSTEM”; which claims benefit of priority to ProvisionalU.S. Patent Application No. 60/177,786, filed Jan. 24, 2000. Both of theaforementioned applications are hereby incorporated by reference intheir entirety.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to the field of streaming media content searchand playback over a network. In particular, the invention relates to acomputer system that enables a continuous streaming media playback froma distribution of sites available over a network such as the Internet.

2. Description of the Related Art

Computers currently can access streaming media on the Internet.Streaming media available on the Internet include, for example, music,video clips such as movie trailers, home movies, and animation.

Users locate streaming media on the Internet by manually selectinglinks. Typically, users browse the media sites that contain numeroussub-links. Users sometimes select through a chain of links to locate adesired media on a media link. Once located, the desired media link mayor may not contain the desired media.

Some services provide media search engine capabilities. Users may entera search request for selected media creations by an artist. The mediasearch engine then displays links to categories and/or sub-links ofmedia that are determined to match one or more criteria in the searchrequest set forth by the user. The determination of which links shouldbe displayed in response to the search request is dependent on thealgorithm used in by the search engine. Typically, links displayed tousers of current search engines are not subject to a determination ofthe quality or availability of the media associated with the medialinks. Further, the search results are outputted to the user as adisplay of links for the user's selection.

Many Internet streaming media outlets provide a limited number of sourcenodes. The sites can be unreliable when the number of users accessingthe site become congested.

SUMMARY OF THE INVENTION

An embodiment of the invention includes a method for playing back mediafrom network. The method comprises receiving a search criteria from anetwork enabled device. The method further includes accessing a databasecomprising a plurality of network addresses, where the databaseassociating each address with one or more classes of information. Eachaddress accesses a media network resource. The method further includesselecting at least one address in the database using the searchcriteria, signaling the selected address to the network enabled device,and controlling the network enabled device so as to automatically accessand play back the media resource of the selected address.

Another embodiment includes a method for playing back media from anetwork. The method includes receiving a request for media playback froma network enabled device. Further, accessing a database comprising aplurality of network addresses, where each address accessing a medianetwork resource. The method also includes identifying at least twoaddresses from the database, signaling each identified address to thenetwork enabled device, and controlling the network enabled device toaccess and automatically play back the media network resources of eachof the signaled addresses.

In another embodiment, a computer system is provided for playing backmedia from a network. The computer system comprises a network enableddevice comprising a media playback component. A database is includedthat comprises a plurality of addresses, where each address locates amedia network resource on the network. The database includes one or moreclasses of information associated with each address in the plurality ofaddresses. The system also includes a network server module that iscoupleable to the network enabled device and to the database. Thenetwork server module is able to receive a search request from theterminal that specifies one or more criterias. The network server moduleselects an address from the database that is associated with a class ofinformation that matches the search criteria. The network server modulesignals the address to the network enabled device to cause the device toaccess the media network resource, and to signal media playbackcomponent to load the media network resource after the device accessesthe media network resource.

In another embodiment, a computer system is provided for playing backmedia from a network. The computer system includes a network enabledplatform comprising a media playback component. A database includes aplurality of addresses, where each address locates a media networkresource on the network. Each address accesses a media network resource.The embodiment further includes a network server module coupleable tothe network enabled device and to the database. The network serverreceives a request for media playback from the network enabled device,selects multiple addresses from the database, and signal the multipleaddresses to the network enabled device. The network server modulecontrol a media playback component on the network enabled device to usethe addresses to automatically access and play back the media networkresource associated with the addresses.

In another embodiment, a network enabled device is configured toplayback media from a network. The network enabled device is coupleableover the network to a database that includes a plurality of addresses.Each address locates a media network resource on the network. Thenetwork enabled device includes a user-interface to prompt for a searchrequest. The network interface signals the request to a network servermodule that is communicatable with the database, and receives one ormore addresses in the database that match the search request. Thenetwork enabled device includes a media playback component that isconfigured to be programmatically controlled by the network servermodule to automatically load the media network resources located by theaddresses that match the search request.

In another embodiment, a network enabled device is configured toplayback media from a network. The network enabled device is coupleableover the network to a database comprising a plurality of addresses. Eachaddress locates a media network resource on the network. The networkenabled device comprises a user-interface including a plurality ofuser-interactive features, including a first user-interactive featurethat prompts to receive a search request for media playback. A networkinterface signals the request to a network server module upon the firstuser-interactive feature receiving the search request for mediaplayback. The network interface is communicatable with the database toreceive one or more addresses in the database that match the searchrequest. A network playback component is configured to beprogrammatically controllable by the network server module toautomatically load the media network resource associated with eachaddress signaled to the network enabled device upon accessing the medianetwork resource. A playback of the media playback component beingcontrollable by one or more control user-interactive features.

An embodiment includes a system that provides media from a network to aterminal having a media playback component. The system includes a firstnetwork site and a second network site, where each network site locatesone or more media network resources. Each media network resource islocatable on the network by a corresponding address that accesses themedia network resource. A network server module is coupleable to theterminal through the network. The network server module identifies afirst media network resource from the first network site and a secondmedia network resource from the second network site. The network servermodule signals the corresponding address of the first media networkresource to the terminal with control signals to cause the playbackcomponent to automatically load the first media network resource. Thenetwork server module automatically signals the corresponding address ofthe second media network resource to the terminal with control signalsto cause the playback component to automatically load the second medianetwork resource.

Another embodiment provides a media playback system for the Internet.The system includes an end terminal having a media playback component. Aweb server module is coupleable to the end terminal through theInternet. The web server module has access to one or more media webresources on a first web site, and to one or more media web resources ona second web site. The web server module signals a first link to a firstmedia web resource on the first web site, and a second link to a secondmedia web resource on the second web site. The web server moduleprovides control signals to the end terminal to cause the end terminalto access and load the first media web resource and the second media webresource into the media playback component.

One or more of the embodiments may include a database that stores linksto each of the plurality of media web resources, the web server moduleidentifying the first link and the second link from the database.

Another embodiment includes a media playback system for the Internet.The system includes a terminal having a media playback component and auser-interface. A web server module is coupleable to the user terminalthrough the Internet. The web server module has access to a plurality oflinks, where each link locates a media web resource. The plurality oflinks are accessible on a plurality of web sites. The web server modulesignals the plurality of links to the user terminal in a designatedorder to cause the terminal to load the media web resource located byeach of the plurality of links into the media playback component. Theembodiment also includes a database that stores the plurality of links.The database is accessible to signal the plurality of links to the webserver module in the designated order. The user-interface signals one ormore inputs from a user to the web server module. The one or more inputsdirect the web server to alter the designated order in which thedatabase signals the plurality of links to the web server module.

Another embodiment includes a system that provides media play-back on anetwork. The system includes a terminal that is coupleable to thenetwork. A play-list module is coupleable to the terminal. The play-listmodule stores a first play-list signaled from the terminal. The firstplay-list includes a plurality of network addresses. A first networkaddress locates a first media network resource on a first network site,and a second network address locates a second media network resource ona second network site. A network server module is coupleable to theterminal and to the play-list module. The network server module signalsthe first play-list to the terminal. The network server module controlsthe terminal to cause the terminal to access the media network resourceassociated with each network address in the first play-list, and toautomatically load each respective media network resources into themedia playback component.

Another embodiment includes a method for providing media to a terminalcoupled to a network, where the terminal includes a media playbackcomponent. A terminal is programmatically directed to access a firstnetwork site in the plurality of network sites. The media playbackcomponent on the terminal is caused to automatically load a first mediaweb resource located at the first network site to playback a firstmedia. The terminal is programmatically directed to access a secondnetwork site in the plurality of network sites. The media playbackcomponent on the terminal is caused to automatically load a second mediaweb resource located at the second network site to playback a secondmedia.

Another embodiment includes a method to provide media to a terminalcoupled to the Internet. A database is accessed that stores a pluralityof links, where each link opening a corresponding media web resource. Afirst link is selected from the database, the first link being locatedon a first network site. Next, a second link is selected from thedatabase, the second link being located in a second network site. Thesecond network site is external to the first network site. Then, theselected links are signaled to a media playback component on theterminal to sequentially access the media web resources associated withthe selected links. The media playback component on the terminal isautomatically signaled to load each of the media web resource accessedfrom the selected links so as to playback a media corresponding to eachmedia web resource.

Another embodiment includes a system to share media playback from anetwork between a plurality of terminals. The plurality of terminalsinclude a first terminal and a second terminal. The system includes aplay-list component locatable on the network by a selectable link. Theplay-list component identifies a plurality of links to form a play-list,where each link in the play-list locating a media file on the network.The system includes a network server module that signals the pluralityof links that form the play-list to the first terminal. The networkserver module receives a signal to transmit the selectable link to asecond terminal to enable the second terminal to locate the play-listmodule.

In another embodiment, a method is provided to locate web resources onthe Internet. A web site is accessed to identify a plurality of linksusing a web browser component. The web site can be automatically orprogrammatically accessed. Each of the plurality of links are selectableto open a corresponding web resource of a specified data type on the website. The plurality of links are made available to a plurality ofInternet enabled devices that select one or more of the links.

Another embodiment includes a system to locating web resources on theInternet. The system includes a web browser component, and a database. Asearch module controls the web browser component to access at least oneweb site. The search module controls the web browser component toidentify a plurality of links to media web resources at the web site.Each of the plurality of links are selectable to open a media webresource. The search module stores the plurality of links in thedatabase.

Another embodiment includes a method to locate web resources on theInternet. A database that stores a plurality of links is accessed, theplurality of links being selectable to open a corresponding web mediaresources. Metadata information is programmatically identified about theweb media resource corresponding to each of the plurality of links. Theplurality of links are made accessible to a plurality of Internetenabled devices. The plurality of Internet enabled devices elect one ormore of the links to open the corresponding media web resource.

Another embodiment includes a method to locate web resources on theInternet. A database is accessed that includes a plurality of links tomedia web resources. Each of the plurality of links are programmaticallyverified to open a corresponding web media resource. Each verified linkis accessible to a plurality of Internet enabled devices that select oneor more of the links to open the corresponding media web resource.

Another embodiment includes a system to locate web resources on theInternet. The system includes a first indexed data structure comprisinga plurality of links. A media playback component is coupleable to thedatabase. The media playback component loads each of the plurality oflinks to verify whether the link is selectable to open a media webresource. A second indexed data structure stores each verified link inthe plurality of links. The second indexed data structure is availableto the plurality of Internet enabled devices.

Another embodiment includes a method to providing links for use in amedia search engine. A plurality of internal links on a network site areidentified. The network site makes a network resource of a specific datatype accessible for a network enabled device. The internal links thatare selectable to open the network resource of the specific data typeare extracted. The external link is stored in a database. One or more ofthe links are automatically signaled to a media playback component inresponse to receiving a search requests from the network enabled device.

Another embodiment includes a method to provide links for use in a mediasearch engine. The method includes a) receiving from a first indexeddata structure a first external link to a first network site; b)initializing a second data structure to be empty; c) determining if thefirst network site contains at least one internal link; d) storing theat least one internal link contained on the first network site that isnot in the first indexed data structure and not in the second indexeddata structure as another external link in the first indexed datastructure; e) identifying the internal links contained on the firstnetwork site that are selectable to open a network resource of aspecific data type or types; f) moving the first external link from thefirst indexed data structure to the second indexed data structure; andg) repeating steps a) through f) until the first indexed data structureis empty.

Another embodiment includes a computer system to search for links tostreaming media playback on a network, the network being accessible to anetwork enabled device. The system includes a metacrawler to locate oneor more media sites in directories containing streaming media. A mediasearch module coupled to be signaled the one or more directories fromthe metacrawler. The media search module identifies a plurality of medialinks for the media sites. Each of the plurality of media links areselectable to open streaming media network resource. A metadataextraction module accesses each media link identified by the mediasearch engine to extract metadata about the identified media link. Adatabase comprising the plurality of media links identified by the mediasearch engine, and the metadata is extracted about each identified medialink. The database enables the network enabled device to access theplurality of media links.

An embodiment includes a rating system for rating media networkresources on a network that is coupleable to a plurality of terminals.The rating system includes a database having a plurality of addresses.Each address locates a corresponding media network resource on thenetwork. A network server module is coupleable to the plurality ofterminals. The network server module accesses the database to signal oneor more addresses from the database to the plurality of terminals. Arating module is coupleable to the plurality of terminals. The ratingmodule receives a rating input from each of the plurality of terminals.The rating module associates the rating input with a selected address inthe database.

In another embodiment, a rating system is provided to rate media networkresources on a network. The rating system includes a database comprisinga plurality of addresses that each locate a corresponding media networkresource on the network. The database includes one or more classes ofinformation associated with each of the plurality of addresses. Anetwork server module is coupleable to the plurality of terminals. Thenetwork server module communicates with each of the plurality ofterminals to receive a search request. The network server module signalsthe database to retrieve one or more addresses from the database inresponse to the search request. The retrieved addresses are associatedwith a class of information matching the search request. A rating moduleis coupleable to the plurality of terminals. The rating module receivesa rating input from each of the plurality of terminals. The ratingmodule associates the rating input with a selected address in thedatabase.

Another embodiment includes a rating system for rating media networkresources available over a network. The media network resources arelocated on the network by a plurality of terminals. The rating systemincludes a database that stores a plurality of addresses. Each addresslocates a corresponding media network resource on the network. Thedatabase includes a rating associated with each of the plurality ofaddresses. A network server module is coupleable to each of theplurality of terminals. The network server module accesses the databaseto signal one or more addresses from the database to the plurality ofterminals. A rating module is coupleable to each of the plurality ofterminals. The rating module receives a rating input from one of theterminals for each of the plurality of addresses in the database. Inresponse to receiving the rating input from one of the plurality ofterminals for a selected address in the database, the rating moduleaccesses the database and reconfigures the rating associated with theselected address. A play-list module accesses the addresses to selectone or more combinations of addresses. The play-list module signals theplay-list to the network server module as addresses to be signaled toone or more of the plurality of terminals.

In a variation, the address may be selected by the play-list modulebased on a criteria stored with the address in the database. Examples ofcriterias include rankings, reflecting preferences of users on terminalsafter playing back media located by the respective addresses. Othercriterias that can be used to select addresses include metadatainformation, such as artist name and media title. For example, thesearch request may specify a ranking as one of the criterias. Theplay-list module then sorts the database for the ranking in selectingthe addresses.

Another embodiment includes a method for ranking media sources on anetwork. The method includes accessing a database that stores aplurality of addresses. Each address locates a media resource on thenetwork and each address is associated with a rating. A selected addressfrom the database is signaled to a terminal coupled to the network. Arating input is received from the terminal after signaling the selectedaddress to the terminal. The rating is associated for the selectedaddress is adjusted in response to receiving the rating input.

Another embodiment includes a method for ranking media sources on anetwork. A database is accessed that stores a plurality of addresses.Each address locates a media resource on the network and each address isassociated with a rating. A combination of addresses are selected toform a play-list. The play-list is signaled to a terminal coupled to thenetwork. A ranking is received from the terminal after signaling theaddresses in the play-list to the terminal. The rating is adjusted foreach address signaled to the terminal from the play-list in response toreceiving the ranking.

Another embodiment includes a method that ranks media sources on anetwork. A database that stores a plurality of addresses is accessed.Each address locates a media resource on the network, and each addressis associated with a rating. A selected address is signaled from thedatabase to a terminal coupled to the network. A ranking is receivedfrom the terminal after the selected address is signaled to theterminal. The rating associated for the selected address is adjusted inresponse to receiving the ranking.

Another embodiment includes a network enabled device that comprises amedia playback component. The media playback component is configured tocommunicate with a network-side module to receive a first plurality oflinks. Each of the first plurality of links locate a media file on anetwork. A web browser component is configured to receive a secondplurality of links. Each of the second plurality of links hosts a mediafile located by one of the first plurality of links. The web browsercomponent displays the web site for each of the second plurality oflinks when the media playback component plays back media from the mediafile being hosted by web site being displayed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flow process describing an embodiment of the invention.

FIG. 2 is a block diagram illustrating an architecture for use with anembodiment of the invention.

FIG. 3 is a block diagram illustrating a back end architecture, under anembodiment of the invention.

FIG. 4 is a block diagram illustrating a media search and playbacksystem, under an embodiment of the invention.

FIG. 5 is a block diagram illustrating components on an end terminalreceiving control information from a server-side module, under anembodiment of the invention.

FIG. 6 is a flow chart illustrating a system for forming a searchdatabase of media resources accessible on a network, under an embodimentof the invention.

FIG. 7 is a flow chart illustrating a system for forming a searchdatabase of media resources accessible on a network, under an embodimentof the invention.

FIG. 8 is a flow chart for verifying records in a search database ofmedia resources, under an embodiment of the invention.

FIG. 9 is a flow chart for extracting metadata about a media resourceassociated with a site on a network, under an embodiment of theinvention.

FIG. 10 is a flow chart for forming play-lists for end users of a systemunder an embodiment of the invention.

FIG. 11 is a flow chart for receiving user input in response to playingback media resources from a search database, under an embodiment of theinvention.

FIG. 12 is a block diagram of a media playback system including a ratingfeature, under an embodiment of the invention.

FIG. 13 is a flow chart describing user input to a user interface for amedia playback system, under an embodiment of the invention.

FIG. 14 is a flow chart describing a rating system, under an embodimentof the invention.

FIG. 15 illustrates an exemplary structure for a database to maintainupdated records on ratings for addresses containing media resources,under an embodiment of the invention.

FIG. 16 is a flow chart for creating play-lists using ratinginformation, under an embodiment of the invention.

FIG. 17 is a flow chart for programmatically categorizing media files,under an embodiment of the invention.

FIG. 18 is a flow chart for creating personalized play-lists ofstreaming media files available in a network, under an embodiment of theinvention.

FIG. 19 illustrates a distributed playback architecture, under anembodiment of the invention.

FIG. 20 illustrates a block diagram of a messaging application, under anembodiment of the invention.

FIG. 21 illustrates a user-interface for use with a media search andplayback system, under an embodiment of the invention.

FIG. 22 includes another user-interface displaying an instance of theweb browser while media is being played back, under an embodiment of theinvention.

DETAILED DESCRIPTION A. System Overview

According to an embodiment, a system is provided comprising a mediasearch engine. The media search engine may be used to create a databaseof links to media files. The links may be structured according topredefined categories and/or user-defined search criteria. A clientterminal includes a media player to automatically access one or moremedia files using the corresponding links. The media player then playsback media contained on the media files.

Among other advantages of the invention, the user terminal accessesmedia files at various sites on a network, without requiring users tomanually select media links. For example, user-terminals may outputmusic to a user by automatically accessing one or more Internet sitescontaining media files. The music is outputted without requiring users'to view and select links to sites containing the media.

In contrast to embodiments of the invention, using other systems tosearch for Internet files containing media can be a distracting andtime-consuming experience for an end user. In many instances, such asearch will yield a series of links on a directory or web search page. Auser may have to click on each individual link, one at a time, to playeach individual media file. The selected media file may be broken andunavailable to deliver media content. Even if the number of broken linksis not high, the user must still click on the links one at a time toactivate each media file, providing at best a stop-and-go experience.

In one embodiment of the invention, a user terminal is able to receivecontinuous media streaming from multiple sites on the Internet. Multiplesites may be accessible to enable the user terminal to receive streamingmedia without any interaction required from an end user other thansignaling a request to receive streaming media. The user terminalautomatically accesses media links containing media using a mediaplayback component.

The media playback component may be controlled by one or moreserver-side modules. In one embodiment, the media playback component onthe user terminal interacts with one or more play-lists generated byserver side modules. The play-lists contain media links for the mediaplayback application. The media links may be structured or ordered inthe play-lists. The play-lists may be generated automatically byback-end modules and/or manually by editors. The play-lists may also begenerated by end users.

The media playback component may also interact with one or more serverside search modules to access media links on the network. The medialinks may be automatically selected based on, for example, a searchcriteria from the end user.

Embodiments of the invention provide a system to search and playbackmedia accessible over a network. In one embodiment, a media searchengine is provided to enable users to request media output based on acriteria set forth in a search request. The media search engine is ableto efficiently locate streaming media on the network that matchescriteria set forth in a search request. The system provides continuousplayback of media found on multiple sites of the network. For example, auser may specify a search based on a specified artist. The systemlocates one or more sites on the Internet containing media files fromthe specified artist. The system enables the user terminal toautomatically and continuously play back media creations available onthe Internet sites.

Further, a backend system under an embodiment of the invention minimizespossibilities of broken links and mismatched search results. The backendsystem may also be used to perform manual and/or programmatic qualitycheck of the media associated with each link.

Further, a search engine under an embodiment of the invention employs anInternet web browser software component on the back-end to performsearches and indexing of web resources. The Internet web browsercomponent may be a configured or modified commercially available webbrowser component. Server-side modules may combine to control thebrowser in locating media links and media sites containing mediacontent. As a result, the media search engine under this embodiment isefficiently implemented, using existing resources on the back-endsystem.

Among other advantages, embodiments of the invention enable streamingmedia from multiple media links to be automatically played to users.Embodiments of the invention also employ a scalable and distributedarchitecture. Scalability in this sense means that the service isavailable to a large (thousands or more) audience of simultaneouslisteners or viewers while minimizing bottlenecks caused by congestion.Another advantage of a distributed architecture is that theunavailability of one media site, or of one or more media on the mediasite, does not preclude the user terminal from receiving media fromanother site. As a result, users are ensured a continuous listening orviewing experience.

Further, streaming media may be continuously outputted to users frommultiple sites on the Internet based on personalized criteria set forthby users. The criteria may be set forth in one or more requests by anend user. The end user may experience media continuously outputted frommultiple sites, based on only one request from the end user. This allowsa user to request media through actions such as clicking requeststhrough a user-interface.

An embodiment of the invention enables users to share streaming mediaexperiences with other end users. For example, users may shareplay-lists containing links to multiple Internet sites. This enablesindividuals to create media programs of streaming media using multiplesites on the Internet. For example, play-lists may be shared among endusers using a host web site, or e-mails.

B. Search and Playback System

A user terminal may transmit a search request from an end user to one ormore modules on a server. A client side playback module, one or moreserver-side modules, or a combination of client and server side modulescombine to access the user terminal to a site on the Internet thatcontains media content immediately available for loading and playback.The response to the search request is media output through the userterminal. The media content is outputted from the user terminal withoutany additional action on the part of the end user after the initialsearch request. Once media from one site is completed, the playbackmodule automatically enables the user terminal to access and playbackmedia located on another Internet site. As a result, an embodimentenables the user terminal to output continuous streaming media to an enduser, where the media outputted is accessed from multiple Internetsites.

Embodiments of the invention may be implemented on the Internet. Otherembodiments may be implemented on any network that carries digitalinformation, such as local-area networks (LANs), Wide Area Networks(WAN), Extranets, Intranets, Internet, and wireless networks, ornetworks utilizing wireless transmissions. An example of a network foruse with an embodiment of the invention includes a network operatingunder a transmission control protocol/Internet protocol (TCP/IP).Embodiments of the invention may also be employed on proprietary WANs,such as America Online™. Thus, discussion of embodiments employed on theInternet are exemplary, and equally applicable to other types ofnetworks described above.

A system for use with an embodiment includes a network enabled device, anetwork server module and a database. The network enabled deviceincludes a device having components to couple to a network such as theInternet. The network enabled device includes a communication port andprocessor, and may also include memory and a display. The communicationport may be a physical port, such as a connector extending a modemconnection. The communication port may also be a wireless port, such asthose configured to transmit and receive radio frequency datacommunications. Examples of network enabled devices include personalcomputers, handheld devices such as those operating Windows CE™ or Palm™operating systems, and cellular phones with Internet capabilities suchas Sprint PCS™ systems. Other examples of network enabled devicesinclude smart appliances, such as systems including speakers and aprocessor to receive communications from the network.

The network enabled device may include a media playback component. Themedia playback component includes an application that plays backstreaming media files. Examples of commercially available media playbackcomponents include Real Network Player™, Apple Quicktime Player™, andMicrosoft Windows Media Player™.

In an embodiment, network server module includes server-side modulesthat communicate to the network enabled device through the communicationport. The network modules may be coupleable to the network enableddevice through a network such as the Internet. Alternatively, thenetwork server module may exist on the terminal. The network servermodule may, for example, access a database on the network from theterminal. Still further, the network server module may exist on both theterminal and on a server on the network. Specifically, the networkserver module may comprise network-side code, executed on the terminalthrough a client application. For example, the network server module mayincludes applets or Java script delivered to the user terminal forexecution of processes and functions, as disclosed herein.

The database stores a plurality of addresses. Each address locates amedia network resource. The media network resource includes files thatcan be loaded into the media playback component to output media. As usedherein, media refers to a combination of audio and/or video. Video mediamay include a collection of images assembled together in an animatedfashion to resemble motion or action. Examples of video media includemovie clips, recordings from video recorders, and animation such ascartoons. Still further, media may include a collection of still imagesand graphic presentations that are combined with audio media. Otherexamples of media include dynamic or animated pictures or text on a webpage.

In one implementation, the media files may be loaded and played back tooutput music or music videos. As another example, media files mayinclude video or animation with story-lines, plots, characters andresemble conventional television or radio programming. Other examplesinclude movie clips, home movies, movie trailers, or highlights fromsporting events.

As used herein, a module includes a program, a subroutine, a portion ofa program, a software component or a hardware component capable ofperforming a stated task or function. A module can exist on a hardwarecomponent such as a server independently of other modules, or a modulecan exist with other modules on the same server or client terminal, orwithin the same program.

The network server module is coupleable to the network enabled device toexchange communications, and to access the database. The network enableddevice provides a search request, including a search criteria. Thesearch criteria includes any condition specified by the user to identifysome of media files from other media files in the database. Examples ofsearch criterias include titles, artist names, data types, userpreferential ratings, quality, and duration.

The network server module selects at least one address from the databasebased on the search criteria. The identified addresses are signaled tothe network enabled device. The network server module may communicatewith the media playback component to cause the media playback componentto playback the media resource located by the address.

FIG. 1 illustrates a process for use with a system to search for andplayback Internet streaming media, under an embodiment of the invention.In one application, the process is performed on architectures describedand illustrated with FIGS. 2 and 3. While the process is described withreference to an integral system, one or more steps described with FIG. 1may be performed independently of other steps. Similarly, components andmodules used to perform steps in FIG. 1 may also be implemented indifferent systems and architectures. Further, steps mentioned with FIG.1 may be performed concurrently with one other, or in an order differentthan shown in FIG. 1.

In step 110, a system builds a database of addresses. An address mayinclude a Universal Resource Locations (URL) for network and Internetsites. A media site include, for example, a web site that allows webusers to access streaming media. In other embodiments, the media sitemay locate network media resources on other types of networks. The mediasites may be located through a media search engine, as describedelsewhere in this application. An exemplary process for identifyingmedia sites under an embodiment of the invention is provided with FIG.4.

Each media site may provide access to media through one or more medialinks available at the site or through other means. The media linksidentify web resources having media content. These web resources mayinclude a file of arbitrary type. Examples of file types includeMultipurpose Internet Mail Extension (MIME) types such as MOV, JPEG, orRAM. The file is available for loading, browsing or playback on theWorld Wide web. Each media link may be either an internal or externallink relatively to that particular media sites. An internal media linkon a web-site may correspond to a URL that identifies a web resourcelocated on the web domain, host, property or server of that site. Anexternal media link on a media site identifies a web resource that isnot located on web domain, host, property or server of that media site.

In step 120, the system identifies and stores in a database media links(URLs) for each media site. An exemplary process for identifying andstoring media links on individual media site stored in a database ofmedia site is provided with FIG. 5.

In step 130, each media link is verified. The media link is verified tocontain media that is available for playback for users. Thus, brokenlinks, inoperational or unavailable media are precluded from beingverified.

In step 140, metadata information is extracted from each media link.Preferably, metadata information is extracted from each verified medialink. In an embodiment, metadata may also be added to a list or databaseof extracted metadata. Additional metadata may be added using, forexample, manual interactive editing and an editor interface (see forexample, editor interface module 275 in FIG. 2). Examples of metadatainformation include (with an exemplary data structure type associatedwith each media link in parenthetical): identification (Integer), author(String), duration (String), media URL (URL), source web site (URL),media type (Integer), rating (Real number), number of votes (Integer),verification status (Boolean), edited status (Boolean), genre type(Index into a genre database table), play-list genre status (Boolean),mix (index into mixes database table), play-list mix status (Boolean),mood (index into moods database table), description (String), clipbroadcast quality (integer), image size for videos (integer, integer),and play-list mood status (Boolean). One or more of these types ofmetadata may be extracted from the media links or from the actual mediafile. For example, a media link to a web resource may be extracted foridentification, duration, author, and source web site. Similarly, one ormore of these types of metadata may be added to the extracted metadatainformation. For example, genre type and description information may beadded to the extracted metadata information.

In step 150, the system creates media play-lists using media databasefor predefined categories. In an embodiment, verified media links arestructured into play-lists, such as described with FIG. 10.

In some embodiments, links to streaming media commercials may beinserted into the play-lists in various locations between media clips.These commercials are targeted to the audience likely to listen to themedia available on the play-list. The commercial may be produced andbroadcast from distributed sources, or from web server module. Otherexamples of streaming media that can be included with play-listsincludes news items and weather reports.

In step 160, a playback interface is provided. The playback interfacecauses the media player component on the user terminal to play mediaassociated with media links in each play-list. The playback interfacemay include features to manipulate play-lists, or to switch betweenplay-lists. For example, the playback interface may allow for a user toskip media or web resources until a preferred media or web resource islocated. The playback interface is a software or hardware applicationthat is executed on the user terminal. The playback interface may bepackaged as a web application, dynamically accessible through a webserver module, or be packaged as a desktop software application.

In an embodiment, a playback interface module includes a streaming mediaclips rating system that allows users to rate each clip as it is playedback. The back-end module rating system uses these votes to generaterated play-lists that are available through the playback Interface forplayback.

Further, the playback interface module may include a system to allowusers to send Internet e-mail notifications to one or more e-mailaddressees regarding a media clip, or to send continuous streaming mediaprograms containing multiple media clips from multiple network sources.Recipients may initiate the playback module by selecting one or morelinks contained in the e-mail. Selecting a link from the e-mailinitiates the play back module on that recipient's terminal, causing theplay back module to play back the media clip or the programming referredto by the sender.

The playback interface includes user interface elements that allow usersto define and execute search criteria for media playback.

FIG. 2 is a block diagram illustrating an architecture of a system 200,under an embodiment of the invention. The system is shown to link a userterminal 210 with media that is accessible on the Internet 220,including the World Wide web 215. Other embodiments of the invention mayoperate with different types of networks.

The user terminal 210 includes any network enabled multimedia computingplatform. In particular, user terminal 210 includes any Internet enabledmultimedia computing platform. Examples of computing systems for userterminal 210 include personal computers (PC), personal digitalassistants (PDA), smart phones, and Internet enabled televisions andradios, and other devices. The multimedia capability is manifested inthe availability of a steaming multimedia playback software and orhardware component. Internet enabling means that the platform can accessinformation over the Internet. In an embodiment, user terminal 210 runsthe media location and playback interface module 270 that is accessibleover the Internet. A communication channel 212, such as a phone line,wireless medium, or DSL line, is used to couple the user terminal 210 tothe Internet. Alternatively, the playback module may be preinstalled onthe client terminal. Under both configurations the playback moduleaccess media play-lists that are stored on an Internet web server.

A back-end database management system 245 is provided to maintaininformation used in providing media searching and playback to userterminal 210. The database management system 245 receives informationfrom modules, including server-side modules that communicate with userterminal 210. In an embodiment, modules used to provide media search andplayback capabilities to user terminal 210 include a media search module230, an automatic verification and extraction module 255, an editormodule 250, a play-list generator module 260, and a web server module270. The modules may communicate with an interface of user terminal 210.

Under an embodiment, this communication is implemented using mediaplay-lists on the web server module 270.

The modules may also communicate with software applications orcomponents on the user terminal, such as a web browser application or aStreaming Media player component in a manner that will be describedbelow.

In an embodiment, media search module 230 includes a media directoriesmeta-crawler module 234 and a media search engine 238. The meta-crawlermodule 234 and the media search engine 238 may be operated independentlyand concurrently of one another. The meta-crawler module 234 conducts ageneral search of the Internet 220 to locate media sites. Media sitesmay include web pages that are likely to contain web resources, medialinks to web resources, or links to other web pages that have such medialinks and/or web resources. The meta-crawler module 234 adds the addressor location of each found media site to a media site table 243maintained by database management system 245. The media site table 243may list media sites that identify a URL for each web page located bymeta-crawler 234.

In one embodiment, the entire media site table 243 is programmaticallygenerated by meta-crawler module 234, without any manual or interactivehuman input. In other embodiments, an editor module 232 may interfacewith database management system 245 to manually input a URL for one ormore of the media sites into the media site table 243. Anotherembodiment may substitute editor module 232 for meta-crawler 234, sothat the media subdirectory manually receives a URL for each media site.

The media search engine 238 accesses the media site table 243 maintainedby database management system 245. The media search engine 238identifies media links to web resources on each media site provided inthe media site table 243. In an embodiment, media search engine 238contacts each site in the media site table 243 to locate media links.The media search engine 238 then stores the addresses of each media linkin the database management system 245. In an embodiment, a URL of eachmedia link is stored in a portion of a media and metadata table 247.

An automatic media verification and metadata extraction (AMVME) module240 accesses the portion of media and metadata table 247 that containsURLs to the media or media links. The AMVME module 240 verifies eachmedia link in media and metadata table 247. The media links are verifiedto contain web resources matching a criteria defining media. Forexample, each media link may be verified to contain a combination ofaudio or video, rather than be only a text document. In addition, themedia links are verified as available for playback by users, to avoidbroken or old links being maintained by database management system 245.

The AMVME module 240 also extracts metadata from the web resourceassociated with each media link in the media and metadata table 247.Preferably, AMVME module 240 extracts metadata from verified medialinks. The AMVME module 240 may automatically visit each media link onthe Internet to extract metadata information, as well as verificationinformation. The metadata extracted pertains to information availablefrom the web resource or about the web resource on the media link.Examples of metadata that may be extracted by media extraction module255 include information such as the author, duration, name, descriptiontext, broadcasting and playback quality of the media content and framesize and display resolution for images, video and home movie clips. Forexample, a media link may be associated with a web resource that is anaudio media. Metadata that may be extracted from the media creation mayinclude the artist name, the name of the media creation, length andaudio/video quality. In an embodiment, media extraction module 255 alsoverifies that the media is available for playback from the media site.The AMVME module 240 may accesses database management system 245 tostore verification and metadata information in media and metadata table247.

In an embodiment, a metadata editor interface 275 is included in thesystem 200. The metadata interface 275 accepts manual entry from aneditor pertaining to metadata of the web resource associated with eachmedia link. The metadata interface module 275 may access one or moremedia links in the media and metadata table 247 to allow manualinspection of each web resource for metadata information. An editoroperating metadata interface module 275 transmits a media streamingrequest to have the media of the web resource replayed for inspection ona terminal. The metadata editor interface 275 then allows for additionalmetadata to be stored in media and metadata table 247. Preferably, theadditional metadata information includes metadata that is notprogrammatically available from the media link containing the webresource. For example, metadata editor interface 275 may be used to addinformation to media and metadata table 247 information such as genre ofthe web resource, description of the web resource, and system predefinedinformation, such as mood and mix, that are found applicable by theeditor to the web resource.

A play-list generator module 260 generates a plurality of play-listsbased on information in the database management system 245. In anembodiment, play-list generator 260 accesses media and metadata list 247for URLs to media contained on stored media links. The play-listgenerator module 260 may create play-lists 284 from predefinedcategories characterized by information stored in the database systemfor media links and metadata stored in table 247. Play-lists 284 arestored on web server module 270.

Under one embodiment, the web server module 270 includes a medialocation and playback application. The user terminal 210 interfaces withthe media location and playback application through the Internet. Forexample, web server module 270 makes the media location and playbackapplication available on a web site. The user can launch the medialocation and playback application by clicking a link on the web site.Under another embodiment, the playback application is pre-installed onthe user terminal.

The playback application accesses the web server module 270 to loadmedia play-lists that are stored on it. In an embodiment, the playbackapplication reads Media URLs and Metadata stored in one or moreplay-lists. This information is used to playback continuous media fromthe play-lists to the user. A web page or network site hosting the mediafile being played back may also be displayed as an instance of a webbrowser on the network enabled device. For example, audio media may beplayed back while the user is presented with a web page hosting theaudio playback (see FIG. 22 and accompanying disclosure).

The media location and playback application may output or playback mediaprocessed by the back-end system and stored in the media and metadatatable 247 upon receiving a request from user terminal 210. For example,under an embodiment, music may be outputted from user terminal 210continuously in a manner that resembles a jukebox, Disk Jockey Mix or aradio station.

An interface of the user terminal 210 enables users to skip playback ofmedia clips, or to switch categories. For example, a user on userterminal 210 may select to hear Jazz programming, and then switch to agenre of classical music. One or more features of a user-interface maybe used to enable users to make selections (see FIG. 21 and accompanyingtext). The user may also control playback settings such as volume,pause, seek and retrieve additional media clip information, skip songs,or replay certain songs being automatically played. The user may alsocontrol and/or customize the creation of play-lists using the interface.For example, one musical play-list may include a combination of genres,such jazz and classical songs.

In an embodiment, the media location and playback applicationprogrammatically controls a streaming media multimedia software orhardware component to perform the actual streaming of the media digitalbits to the user terminal's multimedia output device (such as videodisplay and speakers hardware). The media location and playbackapplication contains functionality that responds to software eventsgenerated by the streaming media component. For example, a playbackerror generated by the streaming component may result in the applicationinstructing the component to play another media file. In anotherexample, the application determines and initiates playback of a mediaclip in response to the component reporting that the currently playingmedia has finished. The application may contain user interface elementsthat allow users to issue media playback commands. These commands aredispatched by the application to the component that implements theplayback command for the currently played media.

In an embodiment, the media location and playback application works incombination with functional commands provided to the user via a webbased software application. A user-interface may be provided to enablethe user to select the function commands at the software application. Anexample of a user-interface is provided below, with FIG. 21 andaccompanying text.

In an embodiment, a categorization module 290 accesses media andmetadata table 247 to add metadata and to categorize media associatedwith media links in media and metadata table 247. The automatic processgenerates metadata such as music genre by consulting with informationstored in other records in media and metadata table 247. For example,the module can automatically set the genre metadata information for allmedia creations available in the table, for a given artists, accordingto genre metadata entered for one or more media creations by the sameartists. This process greatly contributes the efficiency and scalabilityof the back-end system.

FIG. 3 is high-level system software components diagram for the system300, under an embodiment of the invention. The diagram shows howsoftware components may be written, deployed and interact to provide thefunctionality described by system 200. The components of system 200 maybe described as a three-tier architecture. Components are written tospec and deployed to a backend tier, a middle tier, and a front tier.The backend tier includes the database management system 245. Thedatabase management system 245 includes a database 345 and a backendinterface module 355. The backend interface module 355 may be providedwith, for example, a Microsoft SQL Server system (MS SQL).

The middle tier includes modules that communicate with backend interfacemodule 355. The middle tier may include a media sites manager 360 and amedia manager 365 software components. The media sites manager 360 andthe media manager 365 each independently communicate with backendinterface module 355. The media sites manager 360 components exposes aprogrammatic interface 362 to communicate with modules and components inthe front tier. The media manager 365 includes a first media managerinterface 366 and a second media manager interface 368.

The front tier includes a media site module 330 and a media module 340.The media site module 330 communicates with site interface 362. Themedia site module 340 communicates with the first and second mediamanager interfaces 366 and 368. The first and second media managerinterfaces 366 and 368 communicate with the media module 340. The mediasite module 330 includes a front-end interface 332 to a directorymeta-crawler 310 and a media search engine 312 modules. The media sitemodule 340 includes a front-end interface 342 to the media search engine312, an editor interface module 314, and an automatic verificationmodule 316. The directory meta-crawler 310 crawls Internet mediadirectories web sites. The links to media web sites are handed over tothe MediaSite module 330 for storage in the database. The media searchengine 312 searches for media links on web sites provided by theMediaSite module 330, these links are transferred through Interface 342on the Media module 340 for storage in the database module 345.

The editor interface module 314 obtains media link for editing from theMedia module 340, using Interface 342 and loads the media for editorialplayback from the Internet. The editors provide metadata for media thatare added to the database by the Media module 340.

The verification module 316 examines media files or web resourcesaccessed through each media link and updates metadata regarding mediaavailability in the database using Media module 340. This module alsoextracts metadata from Internet media and updates this in the databaseusing Media module 340. The module queries the database for a batch ofmedia records using the Media module 340 and automatically verifies andextracts metadata for the Internet media represented by these records.

With respect to communications from the backend tier to the front-endtier, database management system 345 of the backend tier providesrecords to the system 300. Each record or record set is disconnectedfrom tables or databases of record(s). Disconnected records aretransmitted from the backend tier to the front-end tier as activedatabase objects (ADO) Disconnected record sets.

With respect to communications from the front-end tier to the backendtier, each disconnected record can be updated in the database by anycomponents on any tier. Updated records are transmitted to the databasemanagement system 345 in the form of record set update operations. In anembodiment, directory meta-crawler 310 sends URLs to be added to recordsin database 345 to media site module 330 using an asynchronous methodcalls. The media search engine 312 transmits to media site module 330using a get search method call for batch sites of URLs. The media searchengine 312 uses an asynchronous method call to add media links andmetadata associated with media links.

The components and all tiers expose programmatic interfaces that containcallable methods using the MS DCOM (distributed component object model)software component technology. Communication between the tiers is alsoimplemented using method calls on these components. The components aredeployed in front, middle and back tier hardware systems. Alternatively,The components may be developed and deployed using the MS COM+components technology. Using this technology, a COM+ In Memory Databasesystem (IMDB) proxies and caches tables of the back-end database module245. This process speeds up the search and editorial process. COM+services such Queued Components may used to implement asynchronousmethod calls exposed on Interfaces 362 and 366.

C. Media Search Engine

Embodiments of the invention locate web resources on a network such asthe Internet. In one embodiment, a network browser identifies aplurality of links to one or more network sites. The links are eachselectable to open a network resource of a specified data type. Theidentified links are then made available to network enabled devices thatcan select one or more of the links.

As used herein, a network browser is software that performs corefunctions that include (i) loading network resources; (ii) parsing,translating and laying out network resources, and (iii) displaying thenetwork resources. The network browser includes an applicationprogrammable interface (API). An embodiment of the invention employs thenetwork browser on a back end to locate the network resources of thespecified data type. One advantage of this embodiment is that the webbrowser is employed on the back end programmatically, rather thanthrough manual interaction with an editor or other user.

A network browser may include a shell, an API, and a processing module.A component of the network browser includes the API and the processingmodule. For Internet applications, the processing module may include,for example, a MSHTM or DLL module. The network browser componentperforms functions that include loading a network resource, as well asparsing, translating, and laying out the network resource.

In an Internet application, a web browser component may be used tolocate resources of a specified data type. The web browser component maybe a portion of a commercially available browser. For example, the webbrowser component for use with an embodiment of the invention may be areconfigured Netscape Navigator™ or Internet Explorer™ browser.

In an embodiment, the web browser component is programmaticallycontrolled through the API of the web browser to access the web resourcefor the plurality of links. The web browser may be programmaticallycontrolled to bypass the shell of the web browser. For example, the APImay be used to instruct the web browser to ignore the shell, or todetach the functionality of the shell. The remaining web browsercomponent then identifies the links to the specified data types. Theresult is that the web browser component accesses the web resources ofthe plurality of links to identify the data types of the resources onthe links while ignoring data such as images and sound.

In another embodiment, a search module controls the web browsercomponent to access a web site. The search module controls the webbrowser component to identify a plurality of links to media webresources at the web site. Each of the plurality of links identified bythe web browser component are selectable to open a media web resource.The search module stores the plurality of links in the database.

In another embodiment, a database includes a plurality of links to mediaweb resources. The plurality of links are programmatically verified todetermine whether each link opens a corresponding media web resource.The verified link are made available to a plurality of Internet enableddevices that select one or more of the links to open the correspondingmedia web resource.

The links may be verified on the back end using a media player,including a commercially available media player. For example, each linkthat needs to be verified may be programmatically loaded through an APIof the media player. The response provided by the media player to thelink determines whether the links are verified.

In another embodiment, the media player may be programmed to identifymetadata from the media web resource of each link. The metadata may thenbe stored in a database associated with the link.

Among other advantages, embodiments enable network links to files of aparticular data type to be rapidly accumulated and stored in a database.Each of the links are selectable to open a file on the network. Thefiles may enable a terminal to play back media. In an embodiment, theaddresses access media files that can be loaded into the media playbackcomponent of the user terminal. The files can be stored in the databasewith information that characterizes the files associated with the links.Thus, the links may be characterized by, for example, metadatainformation, and one or more classes of information.

In addition, embodiments enable each link in the database to beprogrammatically verified, so that there are no broken or unavailablelinks in the database. Still further, some metadata information may beprogrammatically identified from each media file. In contrast, existingsystems verify links manually, employing interactive users to performthe manual functions. Existing systems also extract metadata informationmanually.

FIG. 4 illustrates a block diagram in which system 200 receives a searchrequest 203 and provides a response 209. In an embodiment, system 200processes the search request 203 using the web server module 270 and themedia and metadata database 247. The end terminal 210 signals the searchrequest 203 to web server module 270. The web server module 270 accessesthe media and metadata database 247 to retrieve one or more URLsmatching the search request. The web server module 270 signals theresponse containing the retrieved URLs to the media playback component211 of end terminal 210.

In an embodiment, the search request 203 includes one or more criteriasthat specify a selection of URLs from media and metadata database 247.The criterias may correspond to parameters in media and metadatadatabase 247. The table 249 illustrates a data structure of media andmetadata database 247. The table 249 includes a URL list comprising aplurality of URLs. Each URL provides direct access to a web resourcecontaining media. Each URL is characterized by one or more parametersthat correspond to metadata information about the web resourceassociated with the URL. As an example, table 249 provides parameters asbeing genre (G), data type (DT), category (C), web resource identity,and one or more play-lists (PLAY1, PLAY2, PLAY3).

The genre data is a broad class identifier of the media creationcomprising the web resource of the respective URL. For music, the genremay include rock, classical, and jazz. For movies, the genre maycorrespond to romance, comedy, horror etc. The genre may be identifiedeither programmatically, or through an editor interface. One genre maybe associated with one or more URLs in table 249. In the exampleprovided, URL1-URL7 are in either one of three genres, G1, G2, and G3.Alternatively, several genres may be associated with one URL.

The data type parameter corresponds to the MIME characteristic of theweb resource associated with the URL. The category parameter maycorrespond to a sub-class of a genre. For example, in music, a categorymay correspond to soft rock. In movies, a category may correspond to thetime-period of the movie. The table 249 illustrates an example in whichthe category is unique to the genre. Thus, a web resource of one genreis not in the same category as a web resource of another genre. As anexample, URL1 and URL3 are in the same category, as are URL2 and URL5.However, no other URLs are in the same category.

Other metadata information that may be included in media and metadatadatabase 247 include identifier information. The identifier informationidentifies the web-resource. The identifier may provide name of aspecific media creation, as well as an artist or author of the mediacreation.

In an embodiment, media and metadata database 247 includes play-listinformation as parameters of metadata information. The play-lists may beidentified in any one of several ways. For example, the play-lists maybe identified by a unique name or other identifier. The play-lists maybe identified by another parameters, such as genre or category type. ABoolean data type may be associated between each URL and eachplay-lists.

The criterias of the search request 203 specify one or more parametersto media and metadata database 247. For example, search request 203 mayinclude criterias corresponding to one or more of a genre, category,play-list, or identifier. In an embodiment, web server module 270accesses media and metadata database 247 for URLs that have all of theparameters set forth in the search criteria.

The web server module 270 retrieves the URLs matching the criterias ofthe search request. The response 209 is signaled to the media play-backcomponent 211. The response includes one or more URLs. It is noted thatwhen play-lists are requested, additional URLs multiple play-lists areprovided. The response 209 may also include metadata information. Forexample, the response 209 may signal to end terminal 210 the duration ofthe web resource for each URL, the artist, the history, etc.

The web server module 270 further signals control information 207 toaccess the URL provided in the response 209. The control information 207causes end terminal 210 to load the web resource for the media playbackcomponent 211. Thus, the media playback component automatically loadsthe web resources associated with each URL included in response 209. Theexperience provided to end user 210 is that media is outputted inresponse to inputting a search request. This is in contrast to othersystems in which the user is provided links to media sites containingweb resources matching the search criteria.

As an example, a user may specify a media creation from a specificcategory. For example, the user may input a search request for “naturesounds”. The web server module 210 accesses media and metadata database247 for parameters that match “nature sounds”. In one application, aplay-list is located that is pre-programmed to provide URLs to webresources containing nature sounds. The response 209 then comprises oneor more play-lists, each containing multiple URLs to web resourcescontaining nature sounds. In another application, a category parameteror sub-parameter is searched for “nature sounds”. The response 209 mayinclude one or more URLs that are not pre-programmed into play-lists.The response 209 may provide URLs to media playback component 211 one ata time, in groups (such as in play-lists), or all at once.

In an embodiment, categorization module 280 may be used toprogrammatically create one or more parameters such as illustrated bytable 249. The parameters may be determined, by for example, identifyingmetadata information on the media site hosting the URL.

FIG. 5 is a block diagram illustrating the media playback component 211being controlled by one or more modules of system 200, under anembodiment of the invention. The web server module 270 signals controlinformation to an application program interface 276 of the mediaplayback component 211. The control information may be provided by themedia locator and playback application of the web server module 270. Theweb server module 270 signals commands, with one or more URLscorresponding to media resources selected to be signaled to the userterminal 210. As an example, commands from web server module 270 may beinstructions that use each URL as an arguments. Examples of commandsthat control the media playback component include play (URL) and pause(URL).

As an optional feature, web server module 270 may also signal controlinformation to a web browser component 213 of user terminal 210. Thecontrol information may be in the form of commands to access and displaya web site associated with the media resource. The commands may beprovided to an application program interface 279 of the web browsercomponent 213. This allows the system 200 to display the web siteassociated with the media resource selected to be played back on userterminal 210. Thus, user terminal 210 may play back media from the mediaresource while displaying the web site where the media resource islocated. One advantage of this embodiment is that it allows users toreceive media playback from the media resource in one medium, such asaudio, while providing images, audio text, or media not associated withthe media resource. Thus, users can listen to songs from media resourcessignaled to user terminal 210, while viewing banner ads on the web sitewhere the media resource is located.

Each URL signaled from web server module 270 has a network protocol. Formedia resources, and specifically audio files, types of protocolsinclude “HTTP” protocol, “PNM” protocol (RealNetworks, having .RMextensions), or “RTSP” protocol (having .RAM extensions). The URLssignaled by web server module 270 include the protocol at an initialportion of the string forming the URL. Preferably, for HTTP protocolfiles, the string portion corresponding to “HTTP” is replaced with“PNM”. This adjustment prevents playback component 211 from failing as aresult of a bug in the media playback component, particularly if theplayback component 211 is a RealNetworks Player™.

The web server module 270 may be either a network-side module, clientside module, or a combination of both. In either embodiment, web servermodule 270 may access the database directly or indirectly.

FIG. 6 illustrates a process for a component of an Internet media searchmodule, under an embodiment of the invention. A process such asdescribed with FIG. 6 may be used to build a database of media sites,where each media site includes media links and/or links to other mediasites. In an embodiment, the process of FIG. 6 is applicable tometa-crawler module 234 in system 200 (FIG. 2).

The process of FIG. 6 is a backend operation that is unobservable to auser of the user terminal. Preferably, the flow process of FIG. 6 is anautomatic or programmatically controlled process, conductedperiodically. For example, media links may be identified and storedunder a flow process such as shown by FIG. 6 every few days or weeks.The duration between executions of the flow process of FIG. 6 maybereferred to as an idle period.

The process of FIG. 6 provides for extracting URLs of media sites from aweb pages directory. Examples of a web directory for use with anembodiment of the invention includes directories on web sites such asYahoo.com® and Lycos.com®. The flow process of FIG. 6 is a backendoperation that is unobservable to a user of user terminal 210.Preferably, the flow process of FIG. 6 is an automatic orprogrammatically controlled process that does not require humaninteraction.

In step 410, a directory home page is added to a searched-pages datastructure. The searched-pages data structure maintains. A similarlystructured parsed-pages data structure is also maintained to hold URL ofpages already processed by the module. The parsed-pages data structureindicates whether a home page web directory was previously parsed by theprocess. The searched-pages and parsed-pages data structures are keyedor indexed by URL and they support querying for existence of a given URLin them. Examples of keyed or indexed data structures include databasetables and hashtables.

In step 410, the parsed-pages data structure is empty, indicating thatthe directory home pages in the searched-page data structure have notbeen parsed.

In step 420, a determination is made as to whether the searched-pagesdata structure is empty. If the determination is affirmative, the flowprocess is done. This occurs when the process has parsed all theInternal web pages in the directory. If the determination is negative, acurrent page link is called from the searched-pages data structure instep 430. The current page is then loaded into memory and parsed.Parsing means loading and reading the HTML source (or equivalent) codeof the web page so its content is accessible and in a machine-readableformat.

In an embodiment, the page is parsed using an HTML parser component. Anexample of an HTML parser is a web browser. Thus, the current page maybe parsed using a web Browser component. Specifically, step 440 of theprocess may be implemented using an application program interface (API)that is exposed by the web Browser component. In this context, the webBrowser component is configured and used in a back-end server processwith no visible presentation area or end user. It is configured not toload or render media at the web page so that the loading is moreefficient. The configuration may occur through the API.

In an embodiment, the web browser is configured to parse web pagesefficiently by, for example, automatically excluding a presentationlayer from being displayed. Further, the web browser may beprogrammatically configured to not load or parse information that is notcritical to the search function. For example, the web browser componentcan be configured to not load media data found on web pages.

In step 440, all links to media sites on the currently parsed-page aredetermined using the parser. The HTML parser API allows access to thepage document object model. In step 450, all new external page links areadded to the media sites database. An example of a web-page datastructure is provided with media site database table 243 (FIG. 2). Thedatabase stores the URL of the media sites and not the sites themselves.New external page links implies media sites that are not already indexedor present in the media site database.

In step 460, all URLs also link to internal links found on the currentlyparsed page are added to the web pages data structure, provided that theURL in question is (i) not already existing in the searched pages datastructure and (ii) not already existing in the parsed pages datastructure. In step 470, the currently parsed page is moved to the parsedpages data structure, and the flow process returns to step 420. Thisprocess adds the URL of all the media sites indexed by the directory tothe media sites database.

FIG. 7 illustrates another component of an Internet media search module,under an embodiment of the invention. A process such as described withFIG. 7 may be used to identify and store media links to web resourcesthat are accessible from one or more web site. The process of FIG. 7 maybe used in conjunction with a process such as described with FIG. 4. Inan embodiment, the process of FIG. 7 is applicable to media searchengine 238 in system 200 (FIG. 2).

In an embodiment, the flow process of FIG. 7 is a backend operation thatis unobservable to a user of the user terminal. Preferably, the flowprocess of FIG. 7 is an automatic or programmatically controlledprocess, conducted periodically. For example, media links may beidentified and stored under a flow process such as shown by FIG. 7 everyfew days or weeks. The duration between executions of the flow processof FIG. 7 maybe referred to as an idle period.

The flow process of FIG. 7 assumes access to a media sites databasestore. The database includes URLs to each media site. An exemplarydatabase of media sites includes media sites and metadata table 243,described with FIG. 2. Each record contains a URL field for media siteand a field indicating the last date, if any that the process describedin FIG. 5 lastly processed the web site at the URL in the URL field.Reference to a media site that is parsed implies that the media site wasprogrammatically examined for media links to web resources, and forlinks to other media sites using a process such as the one described inFIG. 5.

In step 510, MIME types are determined for web resources. Examples ofMIME types that can be selected for step 510 include JPEG, MOV, RAM andWAVE.

In step 515, a record for a media site is fetched or received from thedatabase. A condition of the media site received is that the media sitewas not parsed by the process described here during the idle period.This condition may be specified by checking, for example, the date fieldassociated with the record. For example, a date field may indicate whenthe media site was previously parsed.

A determination is made in step 520 as to whether a record and a URL wasreceived in step 515. If no URL was received, the system interprets thatall media sites in the database have already been parsed during the idleperiod. If a URL is received, the system in step 525 adds the URL of themedia site to a URLs data structure of media sites to be processed. TheURL data structure of unparsed media sites may be indexed or keyed. Forexample, the URL data structure may be a list, or a hashtable softwaredata-structure.

In step 526, the last search field of the record fetched in step 515 isupdated with the current date to indicate that the media site is parsed.In an embodiment, the field corresponds to a date in which the lastparsing occurred.

In step 530, a URL in the date structure of unparsed media sites isfetched or received. If in step 535, a determination is made that theURL data structure is empty, the system returns to step 515. As will befurther described, the flow process returns to step 515 only when step570 is completed. If a determination is made that the URL data structureis not empty. Thus, steps 510-545 allow the flow process to distinguishbetween when a media site is being parsed for the first time, or hasbeen previously parsed by the process during the idle period.

In step 545, media links on the media site fetched in step 530 areextracted from the HTML code of the page fetched in step 530. The medialinks are associated with web resources on that media site. In step 545,the media resources may be in any MIME format recognizable as media. Inan embodiment, the currently parsed page is parsed using an HTML parser.An example of an HTML parser is a web browser. Thus, the media links maybe extracted using a web browser. Specifically, the media links may beextracted using an application program interface (API) provided by a webbrowser software or hardware component. The web browser may beconfigured to perform this task efficiently by, for example, excluding apresentation layer. Further, the web browser may be programmaticallyconfigured to not load or parse information that is not critical to thesearch function. For example, the browser component may be configured tonot load media data found on web pages.

In step 550, new media links on each media site that match the MIMEformat specified in step 510 are added to a database. New media linksrefers to media links that do not already existing in the database from,for example, a previous execution of the flow process. In step 555,metadata is extracted from each new media link found in step 550. Themetadata may also be stored in the database, with a reference to the URLthe media that the metadata refers to. An exemplary database is providedwith media and metadata table 247 (FIG. 2). An example of metadata isthe URL of the web Page that provided a link for each media URL.

In step 560, the URLs of all new internal media site links on the mediasite currently being parsed are added to the URL data structure. Newinternal media site links refers to URLs of media sites that do notalready exit in the URL data structure and that are not in the parsedURL data structure.

In step 570, the currently parsed page is removed from the URL datastructure and added to the parsed URL data structure. The flow processreturns to step 530.

D. Verification and Extraction Flow Processes

FIG. 8 illustrates a flow process that verifies and extracts metadatafrom Internet streaming media files. While media links are specified,other embodiments of the invention may employ the flow process of FIG. 8within a system that incorporates verification and extraction of anycontent or resource associated with links stored in a database. Aspecific application employs a process such as described with FIG. 4 inthe system 200. In the system 200, flow process of FIG. 8 may beperformed by the AMVME module 240.

In step 610, a module operating the flow process of FIG. 8 fetches orreceives an unverified URL from a database. An example of such adatabase is provided by media and metadata table 247 (FIG. 2). Theunverified URL corresponds to a media link on a media site stored in adatabase such as the media site database 243 (FIG. 2).

In step 620, a determination is made as to whether a URL for a medialink is present. If the URL to the media link is not present, the moduleassumes all media links have been determined as being verified, and theprocess is done.

If a URL exists, the module in step 630 loads the URL into an Internetmultimedia playback software component and programmatically control thecomponent to provide metadata embedded in the media file. In response tothis request, the component loads some or the entire file over theInternet and provides the process with this information. In step 640, adetermination is made as to whether the media or web resource associatedwith the URL was successfully loaded over the Internet by the module. Ifthe determination is that media was not loaded, then in step 650 the URLassociated with the media link is marked as unavailable and verified.The media is marked as verified to prevent the process from revisitingit once it already extracted metadata for it and verified it. Theavailability mark assists the flow processes described in FIG. 9 andFIG. 10. The determination may be in the negative if, for example, themedia link is old and no longer contains a media file that is availablefor playback through its URL, or if the media link contains contentother than what is designated as media.

In an embodiment, the process may use an availability rating for eachmedia. Under such schema, each media is assumed to have the maximumavailability score. For media that are currently not available forplayback, step 650 may lower the score by one. The system may considerthe media as unavailable if its score is below a predefined threshold.This process is useful since Internet streaming media availability mayvary according to factors such as web server load and the time of day oryear.

If the media is loaded, then in step 660 the media metadata is extractedfrom the playback component. Examples of metadata that can be extractedin this step include artist name, playback duration, playback quality,frame size etc.

In step 670, extracted metadata is stored in a database with theassociated URL of the media link that was presently verified. In step680, the URL of the media link presently verified is marked as verifiedin the database. The flow process then returns to step 610.

FIG. 9 illustrates a process for interactively adding metadata to URLsof media stored in a database. In an embodiment, the database maycorrespond to verified URLs of media links determined in FIG. 8. Forexample, a process such as shown by FIG. 9 may be performed oninformation stored by AMVME module 240 in media and metadata table 243.The process of FIG. 9 may be performed by a module interface, such aseditor interface 275 (FIG. 2).

In step 710, an unedited media record is fetched or received by aninterface module from a database. The unedited record may be one or morecategories of metadata and other information about a media link, mediasite, or web resource. In an embodiment, the unedited media informationincludes a URL to a media link, as well as metadata extractedprogrammatically, such as described with FIG. 8. In step 720, adetermination is made as to whether a record was received. If no recordis received in step 720, the flow process assumes there are no uneditedrecords remaining in the database, and the process is done. If a recordis received, the in step 730 the interface module is updated with therecord received. This may correspond to displaying the record fields tothe editor operating the editor interface.

In step 740, the web resource associated with the record received isloaded into an Internet multimedia playback software component.Preferably, the software component is programmatically constructed andcontrolled by the module interface. The software component plays backthe media to the editor. The editor is able to experience the mediaplayed back from the web resource associated with the media link. Theeditor is able to determine metadata information regarding the webresource. For example, the editor may determine mood, genre, quality,appropriate mix name, and description of a web resource such as an audiomedia creation or a home movie clip. In an embodiment, the editorcontrols playback of media located by the search engine on the networkside, such as by pausing and playing media back through an editorinterface.

In step 745, a determination is made as to whether the record receivedalso includes previously determined metadata. The previously determinedmetadata may be extracted programmatically in another process, such asdescribed with FIG. 8. If the determination is made that the recordreceived does not contain extracted metadata information, then in step750 the editor interface automatically extract metadata from the webresource associated with the URL of the record. To accomplish this step,the editor interface may access another module that automaticallyextracts certain types of metadata information. For example, the editorinterface may forward the record to AMVME module 240 (FIG. 3) thatperforms a flow process such as shown by FIG. 8.

Once metadata is included with the record, then a determination is madein step 760 that the editor operating the interface module may choose tosave the auto-extracted metadata already included with the record in thedatabase. If the determination to step 760 is negative, then in step 765the editor updates media information with editor provided metadata usinginput elements on the editorial software user interface. Once thedetermination in step 760 is positive, the record is marked as editedand updated in step 770. Then, all the newly added metadata for themedia record is updated to the database. The process then continues fromstep 710 for the next unedited media. The media is marked as edited soit won't be included for editing in the process.

FIG. 10 illustrates a process for generating a play-list. The flowprocess of FIG. 10 assumes that play-lists names are predetermined andstored in a database. Each play-list is identifiable by its name. Forexample, classic music, jazz and rock. The play-lists include records ofmedia links. In an embodiment, a record includes at least a URL to astreaming media that is categorized in a database as belonging to theplay-list name. In step 810, a play-list name is received fromthe-play-lists database. In step 820, a determination is made as towhether a play-list name was received. If the determination is negative,the system assumes it produced play-lists for all play-lists names, andthe flow process is done. This process is routinely executed to add allnewly added media to the appropriate play-lists.

In step 830, media records that match search criteria are fetched fromthe media database. The criteria is that each record play-list recordfield must match the current play list name obtained in step 810 andthat the ‘in-play-list’ record field for the play list name has Falsevalue. In step 840, a play-list is generated to include all media storedat the records fetched is step 830. The new play-list contains onerecord entry for each fetched media record. Preferably, each play listrecord includes media URL and metadata information that is obtained fromthe media database record.

In step 850, the media records called in step 840 are labeled as beingin the “in-play-list” for the current play-list name. This is achievedby setting the “in-play-list” value for the media database record totrue for the appropriate play-list name.

In step 860, the generated play-list is made available to a server-sidemodule, such as web server module 270 (FIG. 2). As an example, theplay-lists may be stored, copied or appended to be made available on theweb server module. Once the play-lists are available on a server-sidemodule, media URLs and metadata stored in the play-lists is madeavailable to the user terminal so that the user terminal may customizemedia output available from the play-list. Specifically, one or moreplayback applications that run on the user terminal may read theplay-lists, access media links on the play-lists, continually play-backstreaming media from media URLs in the play-list and present mediametadata to users for further interaction. The play-list may also beconfigured to provide access to a client-side media player componentthat uses a URL of a media link to load and play the media associatedthrough it. Additionally, users may further modify and edit play-liststo create personalized media programming. Further, play-lists may bedynamically generated by a web application in response to a request formedia playback made on the user terminal.

FIG. 11 is a flow process for software or hardware application thatenables a user terminal to playback streaming media programmingdetermined by play-lists. An embodiment described below assumes thatplay-lists are available for the process, and that play-lists areidentifiable by play-list names. For example, the play-lists may bedynamically generated by the play-list module, in response to a searchcriteria signaled from a user terminal. The play-lists may also bemanually generated by editors on the network side. The play-lists may bepredetermined by, for example, a process described with FIG. 10. Theplayback component can access the play-list without any directinteraction with server side modules.

In an embodiment, the flow process employs a streaming media playercomponent installed on the user terminal. The media player may bepreexisting on the user terminal. Examples of media players for use withan embodiment include RealNetwork Player™, Microsoft Windows MediaPlayer™, and Apple QuickTime™. The application described in the processmay be web based or installed on the user terminal.

In step 910, an application interface for a media player on the userterminal is provided.

In step 920, a default play-list name is selected from a list ofplay-lists. In an embodiment, a database of play-lists is stored on oraccessible through the web server module 270. The play-list generatormodule creates and stores play-list on the web server module to providethe interface with the user terminal 210 and media player storedthereon. Each play-list may store two or more media links, andpreferably a plurality of media links.

In step 930, one or more play-lists for the current play-list name areloaded. In step 940, media is presented and played-back on the userterminal. To playback media, server-side modules may provide the mediaplayer with URLs to media links that are stored in each play-list. Eachplay-list may include one or more media link URLs and media metadata.The user terminal then accesses the URL and loads the web resourceassociated with that media link into a streaming media playbackcomponent on the user terminal. Media playback on the user terminalincludes outputting, for example, audio and/or video stored in digitalformat on web resources associated with a media link. In embodimentswhere the web resources include video media, the step described maydynamically adjust the interface size and the playback component thatwill handle the actual playback according to the media clip metadata.

Under an embodiment of the invention, the media playback componentcontinuously plays back media by (i) accessing a first site on thenetwork and playing back media from the first site, (ii) thenautomatically accessing a second site and playing back media from thesecond site. The media sites may be provided by play-lists which thatare made accessible to the media playback component. The sequence forautomatically and continuously playing back media may be repeated foreach media link included in the play-list. The play-lists may includehundreds of media links, thus allowing the media play back component toautomatically and continuously play back media using numerous sites on anetwork. As a result, a user is able to experience continuous media playback for hours at a time.

The user terminal also includes an interactive interface to affect themedia being played back. An end user on the user terminal may choose tomanipulate media playback through one or more commands that may beinputted through the application interactive interface or presentationlayer.

In step 945, a determination is made as to whether an event occurred. Ifan event occurred, the flow process determines the event. The flowprocess may determine the event that occurred sequentially orconcurrently. Preferably, the flow process is configured to receivemedia playback event from the streaming media playback component. If theevent is to skip the currently played media, then a determination instep 960 causes a corresponding action of the media being skipped, andthe process step returning to step 940. If the process received aplayback error event, or an playback error event, then a determinationin step 965 causes the flow process to return to step 940 to playbackmedia from the next web resource of the play-list or play-list name.

If a user quits the application, or signals to quit, then adetermination in step 970 causes the flow process to be done. In step975, a user may choose to view a new media web site while media is beingplayed back on the user terminal. Then in step 980, the media web siteis opened in a new Internet window, preferably using the client side webbrowser.

In step 982, a determination is made as to whether the action selectedby the user on the user terminal is to send an e-mail message to one ormore e-mail addresses that allow the receiver(s) to playback the currentmedia and the current play-list played by the sender at the time of theevent. A user may send either an e-mail containing the URL, theplay-list, the play-list name or a URL link. When the message receiverclicks on the link, his terminal will execute the media playbackapplication and will start playing back the media and the play-listsplayed at the time of the message-sending event. If the determination ispositive, then in step 984 the user terminal prompts the user for an oneor more e-mail addresses, and then prompts the user to transmit thee-mail. The user need not have an e-mail client software application forthe operation to succeed. The e-mail may be directed to terminals havinga streaming media playback component and Internet access.

Preferably, the e-mail message is directed to a user having a userterminal that communicates with server-side modules so that therecipient user terminal is automatically plays back media from thetransmitted media link received upon the e-mail being opened. Thus,server side modules may receive addresses from the terminal and act asthe source of the email addressed to one or more recipients.

In step 986, a determination is made as to whether a user wishes to ratea media played back from the media links. If the determination ispositive, then the user is prompted to rate the media in step 988. Arating value is transmitted to a backend web rating system applicationusing the Internet. This operation is part of the service rating systemthat includes server side modules that produce, in combination with thisoperation, top and bottom rating media in each media category.

Step 990 illustrates other exemplary actions that may be received from auser on the user terminal interfacing with the playback application. Forexample, user actions may correspond to pausing media playback,adjusting volume, picture controls, size, seeking within the media, etc.In step 992, playback settings are changed according to user input. Inan embodiment, the flow process returns to step 945 to check for anotherevent if any of the determinations in step 982-992 are negative.

E. Rating System for Media Play Back

An embodiment of the invention includes a rating system with a mediasearch and playback system. The rating system allows users to listen orview media segments available over the Internet according to a rating.In addition, users participate in determining rating media segments byproviding a rating input after listening or viewing a media clip. Theratings may be used as a category, similar to other categories such asgenres or categories.

FIG. 12 illustrates an architecture for use with the rating system,under an embodiment of the invention. The rating system 1000 may beemployed with, for example, the system 200 (FIG. 2). The rating system1000 may include or cooperate with components of a system such asdescribed with FIG. 2 to enable the user view and/or select media clipsfrom play-lists. The generated play-lists may contain a list of links tomedia on the Internet. Selection of media clips by the user causes mediato be played back to the user over the user terminal.

The rating system 1000 includes a backend database management component1045. The database management component 1045 maintains organizationaldata structures such as tables that describe rating information formedia clips. The media clips include Internet streaming audio or video.The rating information may be in the form of values such as, forexample, total votes counted. In an embodiment, database managementcomponent 1045 maintains records that comprise meta information on eachmedia clip including the URL to the media clip, the current rating ofthe media clip, and the total votes for that media clip.

A user 1010 on a user terminal interacts with a web-based playbackinterface 1020. As an example, play-back interface 1020 outputsplay-lists 1018, 1022 to the user. The media clips in each play-listsmay be outputted automatically, or displayed for the selection of theuser. The play-back interface 1020 may also display to the user genrefield 1016 or category field 1014 of the selected media clip, orplay-list 1018, 1022. The playback interface 1020 includes features toenable a user on the user terminal to make entries or selectionsregarding preferences and opinions, as well as other types ofinformation. The user may also view ratings stored on backend database1045. The user may enter selections by, for example, using icons orother display features. The user may make entries by, for example,inputting text or voice. FIG. 12 illustrates a rating selectioncomponent 1012 as a feature of play-back interface 1020. As an example,the rating selection component 1012 allows users to rate a media outputbetween a scale of 1 to 5.

A user 1010 may input a rating to play-back interface 1020. The ratingis signaled from play-back module 1020 to a rating module 1030. In anembodiment, rating module 1030 maintains a tally for each media clip.The tally compiles ratings received from play-back module 1020. Theratings may be received from more than one user and/or user terminal.The tally may be implemented through a protocol that enables the ratingmodule 1030 to organize media clips according to an order. Theorganization of the media clips may correspond to a user preferentiallist, where preferred media clips are, for example, listed together orlisted before less preferred clips. The rating module 1030 may alsodetermine a genre, category, or other organization information throughselections or entries received from the play-back module 1020. Theselections may be tallied through any protocol, such as summation,averages, weighted averages and moving averages. In another embodiment,the rating module 1030 may maintain a text field to store user commentsregarding each media clip.

In an embodiment, the rating component 1030 updates the ratinginformation maintained in the database management component 1045. Forexample, the rating component 1030 may update values of the currentrating and total votes for each media link.

A play-list generator 1040 generates play-lists based on ratinginformation maintained in the database management component 1045. Theplay-list generator 1040 may signal to retrieve or receive records foreach media clip. The play-list generator 1040 then automaticallygenerates one or more play-list 1042. As previously discussed, eachplay-list is a list of media links. In an embodiment, the play-lists1042 are generated according to the current rating and/or rating foreach media clip. The generated play-lists are provided by the play-listgenerator 1040 for the play-back interface 1030.

The user 1010 may choose to listen to play-lists containing media clipsrated according to one or more criteria. The play-lists may also beorganized according to other factors, such as genre and category.

FIG. 13 is a flow chart that allows a user to listen to media clips thatare rated according to one or more criteria. In step 1110, the user isprovided a user-interface that allows users to receive media sortedaccording to one or more categories. The categories correspond togenres, such as type of music etc.

In step 1120, the user selects a category from the options presented bythe user-interface. In response to the selection, the user terminal isprovided one or more play-list in step 1130. The play-list received bythe user-terminal matches the category or genre selected by the user.Further, play-lists contain predetermined media links to media clips.The media clips in each of the play-lists are determined according to arating system, using a system such as described by FIG. 12. Thepredetermined play-list may correspond to a play-list generated byplay-list generator 1040 (FIG. 12). Once the play-list is received bythe user terminal, the flow process returns to step 1120.

In step 1140, media clips are played back on the user terminal. Themedia clips are played back consecutively and automatically, so that theuser experiences continuous media playback. For example, the play-listsmay contain numerous media creations from a selected genre. The mediacreations may be determined for the play-list according to a ratingformula. The user is provided the media creations of the selected genrecontinuously, so that the user's media experience resembles listening toan album.

FIG. 14 illustrates a flow process for updating a rating of a mediaclip, under an embodiment of the invention. In step 1210, a module isprovided a rating event. The rating event is a rating for a particularmedia clip, having an associated URL. The rating from the user ispredefined from a closed set. For example, the user may provide a ratingfrom 1 to 5.

In step 1220, a record is located for the media clip that was currentlyrated. The record may be stored in a database, and include the medialink for the media clip, the current rating of the media clip, and thevotes received for that media clip. In an embodiment, the record mayinclude more than one URL associated with the media clip that was rated.In an embodiment, the record is maintained in database managementcomponent 1045 (FIG. 12).

In step 1230, a rating field for the media record is updated. The ratingfield may correspond to the current rating of a media clip. A modulesuch as the rating module 1030 may update the rating field in databasemanagement component 1045 (FIG. 12). The media record is updated todetermine a new rating. In one embodiment, the new rating is an averagedbased formula. The formula may also be weighted. An example of a formulato determine a rating, under an embodiment of the invention is:Newrating=1/(n+1)(N*(old rating)+user provided rating)N is the total number of votes received, and newrating ranges between 0and a maximum value.

In step 1240, record for the media clip rated is further updated to addan additional vote to the field for votes received. The flow processthen returns to step 1210.

FIG. 15 illustrates an exemplary structure for a database to maintainupdated records on ratings and votes tallied. The table may associatevalues corresponding number of votes, rating, and other information to amedia link containing a media clip.

FIG. 16 illustrates a flow process for generating media clips intoplay-lists according to a rating criteria. Play-lists including a ratingcriteria are referred to as rated play-lists. The flow process assumesknown categories for media clips. The flow process also assumes a ratingfor rated media clips, and the number of media clips in a ratedplay-list. The flow process may be used with any of the aforementionedembodiments.

In step 1410, a next category may be fetched from a database containingthe different categories of media clips. In step 1420, the system makesa determination as to whether a category was received. If no category isreceived, the system assumes that there are no more media categories tobe rated.

In step 1430, a new play-list is created for a current category. In step1440, up to N rated media clips from a database of rated media clips areadded to the play-list. Preferably, N is a constant in the flow process.Then in step 1450, an old play-list is deleted, and the new play-list issaved. The new play-list may be saved in a format that followspredefined protocol so that the play-list and its contents areaccessible to a streaming media play back interface. The flow processthen returns to step 1410.

FIG. 17 illustrates a flow process for programmatically categorizingmedia files. The process assumes a database containing metadataassociated with media clips. The metadata includes metadata provided bya human editor. For example, the metadata may pertain to categories suchas genre, mood and atmosphere.

In step 1510, a record is retrieved from the database. The record isretrieved with metadata information containing a first type of metadatainformation and a second type of metadata information. As an example,the first type of metadata information may correspond to a genre ofmusic, and the second type of metadata information may correspond to anartist. In step 1520, a determination is made as to whether a record wasreceived. If the determination is negative, then the process assumesthat all media clips have been categorized.

If the determination in step 1520 is positive, then all records in thedatabase having the first type of metadata information are retrieved instep 1530. In step 1540, all records retrieved in step 1530 are updatedto include the second type of metadata information. As an example, allrecords belonging to a particular artist (first type of metadatainformation) or given additional metadata information of a particulargenre (second type of metadata information). The process then returns tostep 1510 to retrieve another record.

In one embodiment, the second type of metadata information is a genuscategory, and the first type of metadata information is a species of thefirst type of metadata information. Once the first record is known tohave the a particular species and genus, the genus may be determined andstored for all records having the same species.

F. Personalized Media Playback

FIG. 18 is a flow process to create personalized play-lists of streamingmedia files available on the Internet (or other networks). Theplay-lists may be personalized by users on user-terminals.

In step 1610, a user chooses to add a URL of a selected media clip to apersonal favorite play-list. In step 1620, the flow process adds the URL(and metadata) of the selected media clip to a user terminal store foruser persistent information, such as an Internet cookie. The persistentdata store is then accessible for the web-based play back application onthe user terminal.

In step 1630, the user selects to play back media clips from that user'sfavorite play-list. In step 1640, the system reads back the media clipsfrom the persisted data store. In step 1650, the system plays mediaclips using a URL associated with each media clip. The cookie may alsoprovide additional URLs. Thus, multiple media clips may be playedcontinuously from different sites on the Internet.

The user may edit the play-list, change an order of the play-list, ordelete selections from the play-list. The user may designate certainplay-lists as personal, so as to identify the play-list with that user'sterminal. Alternatively, the play-list may be stored on a network serverand accessed using the media location and playback module. Users mayaccess their personal play-lists from any one of a plurality ofterminals that have access to the system.

G. Distributed Architecture

An implementation under an embodiment provides a distributedarchitecture in which a user terminal accesses media resources from aplurality of network sites. In a network such as the Internet, the userterminal accesses multiple web sites to playback media locates as fileson those web sites.

A network site includes any network location having internal links.Embodiments of the invention access network sites providing links tomedia files and/or other network sites. A web site refers to a networksite on the Internet. Examples of web sites include web pages, includingweb pages with HTML links to other web sites, to media files, and toother types of files.

The distributed architecture inverts conventional media distributionparadigms. Numerous streaming media files can be streamed to anindividual user terminal continuously from throughout the Internet usingthe embodiment of the distributed playback architecture. Thedistribution architecture is scalable to provide thousands or millionsof streaming media files to user terminals. The users can then playmedia files located throughout the Internet in a continuous manner fromthe numerous Internet sites.

FIG. 19 illustrates a distributed playback architecture, under anembodiment of the invention. A user terminal 1710 has access to Nnetwork sites that provide access to media, also referred to here asmedia sites. The N media sites 1722 via web server module 1770. Themedia sites 1722 each have one or more links to media web resources. Thelinks are represented by URLs 1-N. The web server module 1770 can loadthe media resources onto a media playback component of user terminal1710. Once loaded, the media resources are played back by a mediaplayback component on user terminal 1710.

In an embodiment, the media sites 1722 correspond to different locationson a network such as the Internet. For example, media sites may havedifferent Internet addresses, including different domains. Each mediasite provides direct access to a media network resource. This impliesthat a URL (or link) to one of the media sites accesses the medianetwork resource for playback without accessing another internal URL (orlink).

In an embodiment, web server module 1770 signals multiple URL links touser terminal 1710. The media playback component of user terminal 1710accesses each link to playback the media resource. The URLs are selectedfor media playback so as to output media from user terminal 1710according to a predetermined program.

In an embodiment, the program is selected or defined from a searchrequest of user. For example, a search request may designate a categoryfor media output, such as a genre and artist. All URLs containing mediafrom that artist and genre may be gathered and signaled from web servermodule 1770 to user terminal 1710. The URLs may be provided in anyorder, such as random, etc. or a chronological order of the artist.

In another embodiment, a program may be provided by one or moreplay-lists. Each play-list in the program may be generated by, forexample, a play-list generator 1040 (FIG. 12). The play-lists may bepersonalized for the user of the end terminal 1710. For example,play-lists may be generated for preferences and profiles specified bythe user of user terminal 1710. As another example, a user may couple tothe Internet, prompting web server module 1770 to automatically signalone or more play-lists containing the URLs to user terminal 1710. Still,other embodiments provide for URLs to web resources, or play-listscontaining the URLs to be randomly provided to user terminal 1710.

Among other advantages, the distributed architecture permitssimultaneous playback of, for example, thousands or millions of multiplestreams which do not congregate on a single point. This avoidscongestion arising under examples of the current media paradigms. Thisensures that the embodiment of our distributed architecture may “scale,”or permit the simultaneous playback of, for example, thousands ormillions of simultaneous streams. Further, the quality of the userexperience is not affected by scaling a system under the distributedarchitecture embodiment.

In contrast, conventional broadcasting employs one radio or televisionsignal to broadcast to listeners or viewers. Media files disseminatedover the Internet today may be distributed in a manner which is somewhatsimilar in that the media file is located on a single server (or smallgroup of servers) which is accessed by potentially large number ofInternet users. As a result, the experience of the users may diminishdue to the limited ability of current systems to scale.

This distributed playback architecture, the delivery of streaming mediathrough this playback architecture, in combination with the searchfunctionality performed by the back-end module, and the rating andpersonalization features of the playback client terminal module permitsthe creation of a broadcasting system that is personalized by an enduser. A personal broadcasting system permits each individual user tocreate media programs which can be sent to, for example, thousands ormillions or other users who can simultaneously play differentprogramming combinations using a distribution of Internet (or othernetwork) sites.

An example of a distributed architecture playback system includeswireless devices that are communicatable to a network containing mediaresources. For example, media playback component 1710 may be loaded ontoa wireless access protocol (WAP) enabled device. Examples of WAP enableddevices include handheld computes and cell phones. The WAP enableddevice may use a wireless communication network to access network servermodule 1770. The WAP enabled device may also include output features,such as speakers or a display screen. The WAP enabled device accessesmedia sites 1722 by control of network server module 1770. The WAPenabled device then plays back media from the media sites 1722. The WAPenabled device may then be used to simulate a portable radio.

As another example, an automobile may be equipped with a wirelessdevice. The wireless device accesses multiple media sites on a networksuch as the Internet to and provide playback of media clips. Forexample, the user may select to hear music from a favorite play-listusing the WAP enabled device in the automobile.

H. Messaging Applications

FIG. 20 is a diagram illustrating a messaging application, under anembodiment of the invention. The messaging application enables the userto share a media playback experience with other users having access tothe network.

FIG. 20 assumes the messaging application is operated on a network suchas the Internet. In the embodiment, a network interface or network-sidemodule is used to enable messaging, rather than a client messagingapplications. Examples of messaging applications for use withembodiments include e-mails, which are delivered to a folder on arecipient's terminal. Other types of electronic messages include instantmessages, which can be displayed or heard on the recipients terminalautomatically upon arrival.

A messaging module 2080 receives a messaging request from a first userterminal (sender) 2010. The messaging module 2080 may be an applicationor portion of network server module 2070. The messaging request isentered by the user through the user-interface 1900, using for example,an e-mail selection field 1990.

The messaging module 2080 receives addresses to deliver messages torecipient terminals (recipient) 2020. The sender 2010 may manuallysignal the recipients address using entry methods such as keyboards,graphic user selection features, or audio commands. Alternatively,messaging module 2080 has access to network stored addresses for thespecific user. The network stored messages are then selectable from aterminal by the user on the sender terminal 2010.

In response to a request from sender 2010, messaging module 2080generates a message 2085 for the recipient. The request may also includethe address of the intended recipient(s). The message 2085 is sent toall recipients 2020 specified by sender 2010. The contents of themessage 2085 include a URL to the network server module 2070. In anembodiment, the URL in the message is packaged with arguments or othercoding to identify a play-list maintained on the network server module2070. The URL may also be packaged with arguments to identify thespecific song being played when the sender causes the message to betransmitted to the recipient. Alternatively, the URL may identify to therecipient the search request or criteria used by the sender.

The recipient may choose to return a message 2082 to signal messagingmodule 2080. In one embodiment, the content of the message isconstructed so that once the message is opened, the user can select alink to a module that stores or maintains the play-list 2075. ForInternet applications, the link is HTML formatted to include the URL ofnetwork server module 2070, and arguments to identify the play-listselected by sender 2010. Once network server module 2070 is accessed bythe recipient 2020, arguments 2088 contained with the link identify thespecific play-list 2075 experienced by sender 2010 when the request tosend the message was made.

If the message is instant, the recipient 2020 can respond immediately tosimultaneously share the experience of sender 2010. Alternatively, therecipient 2020 can be made to respond automatically upon the recipient2020 receiving the message 2085, so as to enable sender 2010 and 2020 tosimultaneously or concurrently share the same media playback.

The argument 2088 that is packaged with the link may also identifyindividual media clips, and/or an entire play-lists. The recipient 2020is able to experience media playback from individual media clipsselected by sender 2010.

In another embodiment, message 2085 is constructed so that once themessage is opened, the user is automatically connected to network servermodule 2070. The message may be an e-mail, stored in a designated folderof recipient 2020. The e-mail may include an HTML formatted URL to causethe recipient's terminal to access and communicate with network servermodule 2070. The HTML formatted URL may also include code that causesthe user terminal to automatically access network server module 2070upon the e-mail being opened. The HTML formatted link may also includearguments to specify the play-list 2088 and/or media clip identified bythe sender, as well as other parameters of the URL. Once the play-listor media clip is identified by network server module 2070, the recipient2020 is able to share the media playback experience of the sender 2010.The sender 2010 can experience the media playback at the time sender2010 requests the message to be sent.

In the embodiments shown, sender 2010 can select a media program that issignaled transmitted to recipient 2020 by messaging module 2080. Theprogram may correspond to one or more play-lists, playing back multiplemedia resources. While sender 2010 is being played back the program, thesender 2010 can specify the address of recipient 2020 to messagingmodule 2080. The messaging module 2080 generate a message that includesa selectable link to enable the recipient to access the network servermodule 2070. Arguments or scripting contained with the URL identify theparticular play-list being signaled to the sender 2010. Since theplay-list is updated after every media resource is played back to sender2010, recipient 2020 accesses the play-list at the selection beingplayed back to the sender 2010. The play-list is then signaled to thesender 2010 and recipient 2020 simultaneously, or approximatelythereabout. Alternatively, recipient 2020 accesses the play-listbeginning with the media clip played back to sender 2010 when the sender2010 selected to transmit the message to recipient 2020.

As an example, sender 2010 transmits a search request causing media,based on search criterias of a specific artist and a ranking. Thenetwork server module 2070 identifies URLs matching the search requestand forms play-list 2075 for sender 2010. After reviewing the play-list2075, the sender 2010 decides to share the media playback with a friend,recipient 2020, whom the sender believes would appreciate play-list2075. The sender 2010 requests messaging module 2080 to transmit message2085 to recipient 2020 by submitting the recipient's e-mail address tothe messaging module 2080. The message 2085 sits on the recipient'sterminal until accessed. The recipient 2020 selects message 2085 toaccess play-list 2075. Unless the messaging is nearly instantaneous, therecipient experiences media playback from the play-list 2075 when sender2010 request message 2085 to be sent. Alternatively, sender 2010 mayrequest the entire play-list 2075 to be transmitted to recipient 2020.In this way, sender 2010 and recipient 2020 may share a common interestin certain genres, category, artists etc. of media playback.

I. User-Interface

FIG. 21 illustrates a user-interface 1900, under an embodiment of theinvention. The user-interface 1900 may correspond to the play-backinterface 1020, described with FIG. 10. Alternatively, theuser-interface may be a terminal side component in communication withone or more server-side modules, such as for example web server module1070 (FIG. 12).

In an embodiment such as shown by FIG. 12, user-interface 1900 includesa plurality of user-interactive features. The user-interactive featuresenable users to interact with the system 200 from the user terminal 210.Some of the plurality of user-interactive features allow users to submitsearch requests and other media requests for playback. Other controluser-interactive features allow users to affect the play back of themedia resources.

The user-interface 1900 may output to the user information, images,and/or audio that is different than the media resource being playedback. For example, user-interface 1900 displays metadata information tothe users about the media resource being played back. In addition, theuser-interface 1900 enables users to, for example, view advertisement,receive electronic messages, and create and manage play-lists.

In an embodiment such as shown by FIG. 21, the user-interface 1900includes a first menu field 1910, a second menu field 1920, and a thirdmenu field 1930. The first menu field 1910 allows the user to select afirst criteria for media resources that are to be played back. Thesecond menu field 1920 allows the user to select a second criteria froma set of media resources matching the first criteria. The third menufield 1930 allows the user to select a third criteria from the a set ofmedia resources matching both the first and second criteria. Each of themenu fields 1910-1930 may be in the form of click and drag-down menus.

The user-interface 1900 may also include a text field 1940. The textfield 1940 allows users to enter a search criteria. The search criteriaentered in text field 1940 may be combined with the search criterias ofone or more menu fields 1910-1930 using a Boolean operation. Preferably,all search criterias are AND together into a single search criteria. Forexample, the search criteria entered in text field 1940 may correspondto an artist name, or a title of a media creation.

In an embodiment, the user-interface 1900 provides features that prompta user for input, such as for one more search criterias. The web servermodule 270 receives the search criteria(s) signaled from user terminal210, and access media and metadata table 247. Each of the menu field1910-1930 may also allow users to enter text field as the searchcriterias. The search criteria(s) are matched to URLs containingmetadata having the same (or equivalent) criterias. For example, thesearch request may specify a genre, and a first name of an artist. Then,web access server 270 locates URLs to media resources having associatedmetadata information that identifies the media resource as being of thesame genre, and as containing the same first name in the artist namemetadata indexed data structure.

The web server module includes a feedback display portion 1950. Thefeedback display portion 1950 may signal information, messages,advertisement etc. to the end user. In an embodiment, feedback displayportion 1950 displays metadata information about the media resourcebeing played back. For example, a song of a particular genre andcategory may be played back. The display screen portion 1950 may displaythe title of the song, the artist name, a play-list associated with thesong, a rating component of the song, and the song's duration.Information is read when the media playback component loads the mediaresource.

Other user-interactive features may also be included in user-interface1900. In an embodiment, user-interface 1900 includes a play-list feature1960. The play-list feature 1960 enables users to add a media creationto a play-list. The play-list feature 1960 may, as an example, be aselectable icon. Upon selecting the play-list feature 1960, a pop-upwindow (not shown) may be displayed allowing a user to name or selectthe play-list that will include the media resource being played. In thisway, a user of user terminal 210 can provide input to create and manageplay-lists, using systems such as described with FIGS. 12 and 19.

The user-interface 1900 may include one or more control user-interactivefeatures. The control user-interactive features may be in the form ofselectable icons. A skip feature 1972 causes, for example, web servermodule 270 to signal a URL of another media creation to the mediaplayback component. This causes the media playback component to startplaying back a new media creation. A pause feature 1974 enables users topause the media playback component from playing back the media resource.The pause feature 1974 may signal the media playback component directly,or cause the web server module to signal the command to the mediaplayback component. Reselecting the pause feature 1974 then causes themedia creation to be played back from the portion where playback waspaused. Similarly, a seek feature 1976 may signal to seek or move to aspecific instance of playback on the media resource. A volume feature1978 signals the application program interface 276 (FIG. 5) to raise thevolume of the media resource being played back.

The user-interface 1900 may also include a rating feature 1980. Therating feature 1980 may be in the form of multiple selectable icons,where the icons are arranged to correspond to a rating. For example,five icons may be provided to represent best to worst ratings. In anembodiment, the rating feature 1980 enables a user to rate a mediaresource during or after it is played back on the user terminal 210.With reference to an embodiment such as described with FIG. 12, therating feature 1980 is used to prompt a user to signal a rating torating component 1030 (FIG. 12). The rating feature 1980 may be a userresponse to a media clip played back on user terminal 210. The ratingcomponent 1030 receives the rating and modifies rating informationassociated with the URL that is stored in 1045. The rating informationmay then be provided to other users or user terminals. For example, therating information may then be signaled to display portions 1950 ofother user terminals 210 who select that media clip for playback.

The user-interface 1900 also includes a personal play-list feature 1985.The personal play-list feature includes iconic selection features,including an add icon 1987 to add a URL to a play-list, and a play icon1989 to play a personal play-list. The add icon 1987 enables a user tosignal play-list generator 1040 (FIG. 12) to add a URL to the personalplay-list. The URL being added to the play-list may correspond to amedia resource being played back on user terminal 210. The play icon1989 may be selected to cause web server module 1070 (FIG. 12) to signalURLs from the personal play-list to the media playback component of userterminal 210. In this way, user terminal 210 may select to havecontinuous media output from resources previously selected to be on aplay-list.

The user-interface 1900 may also include an e-mail selection feature1990. The e-mail selection feature 1990 may be iconic, to allowselection by the user upon the media playback. Once selected, an e-mailprogram on user terminal 210 may be launched. The e-mail program may bedirected to open a new message, and attach the URL of the selected mediaresource.

FIG. 22 illustrates an embodiment in which user-interface 1900 isdisplayed on the desktop along a second window 2210 showing a web site2212. The web site 2212 hosts the media file being played back. In thisembodiment, web server module 1070 signals a media file URL to the mediaplayer component of the terminal. The web server module 1070concurrently signals the web browser component 213 on the terminalanother URL to the hosting web site. The web browser 213 opens thesecond window 2210 to display the web site while the media from themedia file is being played back on the terminal. In this way, users aredisplayed the web site hosting the media file while media from the mediafile is played back. This allows the user to view, for example, bannerads, artist name and titles, and copyright information while media fromthe web site is being played back.

After the playback is complete for one media file, a URL to a next mediafile is signaled to the media player component on the terminal. The nextURL may be determined by a sequence of a play-list, or by a result to asearch term inputted from the user. If the URL of the next media file ishosted on a web site that is different than the preceding web site, thenweb server module 270 signals the URL of the next hosting web site tothe web browser. The second window 2210 then displays a second web site2212′ that hosts the media file being played back. In this way, thesecond window 2210 displays only web sites hosting the media files beingplayed back.

J. Conclusion

The foregoing description of various embodiments of the invention hasbeen presented for purposes of illustration and description. It is notintended to limit the invention to the precise forms disclosed. Manymodifications and equivalent arrangements will be apparent.

1. A system for providing media from a network to a terminal, theterminal including a media playback component, the system comprising: afirst network site and a second network site, each network site locatingone or more media network resources, each media network resource beinglocatable on the network by a corresponding address that accesses themedia network resource; and a network server module that communicateswith the media playback component, the network server module identifyinga first media network resource from the first network site and a secondmedia network resource from the second network site, the network servermodule signaling the corresponding address of the first media networkresource to the media playback component with control signals to causethe playback component to automatically load the first media networkresource, the network server module automatically signaling thecorresponding address of the second media network resource to the mediaplayback component with control signals to cause the playback componentto automatically load the second media network resource.
 2. The systemof claim 1, wherein the network server module signals the correspondingaddresses of the first and second media network resource to the terminalwith control signals to automatically playback the first media networkresource and then the second media network resource on the terminal. 3.The system of claim 1, further comprising a database including thecorresponding addresses of the one or more media network resources oneach of the first and second network sites, wherein the network servermodule selects the first media network resource and the second medianetwork resource from the database using a selection criteria.
 4. Thesystem of claim 1, wherein the network server module is coupleable tothe user terminal through the network.
 5. The system of claim 1, whereinthe network server module is located on the user terminal.
 6. The systemof claim 1, wherein the network server module identifies the first medianetwork resource and the second media network resource through a randomselection.
 7. The system of claim 1, wherein the network server modulesignals the first media network resource, the second media networkresource, and other media network resources to the terminal in apredetermined order, the other media network resources being located onthe first network site, the second network site, or an other networksite.
 8. The system of claim 1, wherein the first media network resourceand the second media network resource are locatable over the Internet.9. The system of claim 1, wherein the first media network resource andthe second media network resource include a combination of music and/orvideo.
 10. The system of claim 1, wherein the corresponding addresses ofthe one or more media network resources on the first network site and onthe second network site each contain no internal links.